<template>
  <!-- // 分配角色 -->
  <div>
    <el-checkbox-group v-model="roleIds">
      <el-checkbox
        v-for="role in list"
        :key="role.id"
        :label="role.id"
      > {{ role.name }} </el-checkbox>
    </el-checkbox-group>
    <div style="margin-top: 20px; text-align: right">
      <el-button type="primary" @click="hSubmit">确定</el-button>
      <el-button @click="closeDialog">取消</el-button>
    </div>
  </div>
</template>
<script>
import { getRoles } from '@/api/setting'
import { getUserDetailById } from '@/api/user'
import { assignRoles } from '@/api/employees'
export default {
  props: { // props传值是异步的
    employeeId: { // 用户的id 用来查询当前用户的角色信息
      type: String,
      required: true
    }
  },
  data() {
    return {
      roleIds: [], // 当前选中的角色的id
      list: [] // 所有的角色
    }
  },
  //   created() { // 组件创建测时候执行一次
  //     this.loadRoles() // 获取所有角色信息
  //   },
  methods: {
    closeDialog() { // 点击 取消，关闭弹层
      this.$emit('close') // 触发父组件@close事件，关闭弹层
    },
    async loadRoles() {
      const res = await getRoles({ page: 1, pageSize: 100 }) // 获取所有角色信息
      // console.log('获取所有数据：', res)
      this.list = res.data.rows // 保存所有的角色
      const info = await getUserDetailById(this.employeeId) // 获取用某个用户的信息
      console.log(info)
      // 保存当前用户已经有的角色
      this.roleIds = info.data.roleIds
    },
    // 点击确定后执行
    async hSubmit() { // 为用户分配角色
      // 参数：id:当前用户id, roleIds:选中的角色id组成的数组
      // 为用户分配角色后，ajax请求，通知后台
      const res = await assignRoles({ id: this.employeeId, roleIds: this.roleIds })
      console.log(res)
      // 通知父组件 关闭弹层, 更新数据
      this.$emit('update')
    }
  }
}
</script>
